Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

215
Visualizações
¿Por qué tengo que usar "usar" antes del enlace personalizado en reaccionar?

¿Por qué tenemos que usar use antes del gancho personalizado? ¿Es esto solo una convención de nomenclatura o hay algo que React está haciendo internamente para hacer algo especial?

CODESANDBOX LINK

Creé dos ganchos personalizados useCustomHook y customHook , ambos se definen a continuación. Uno con use de prefijo y otro sin él. pero al usar useState hook en customHook eslint da un error como:

ingrese la descripción de la imagen aquí

por qué está dando un error. Dado que el gancho personalizado es solo una función normal en la que podemos usar otros ganchos. A continuación se muestra la regla de React docs.

A diferencia de un componente React, un Hook personalizado no necesita tener una firma específica. Podemos decidir lo que toma como argumentos, y lo que, en todo caso, debe devolver. En otras palabras, es como una función normal. Su nombre siempre debe comenzar con uso para que pueda saber de un vistazo que se aplican las reglas de Hooks.

useCustomHook: with use Prefix

 import { useState } from "react"; export default function useCustomHook(initialValue) { const [value, setValue] = useState(initialValue); function changeValue() { setValue((v) => v + 100); } return [value, changeValue]; }

customHook: without use Prefix

 import { useState } from "react"; export default function customHook(initialValue) { const [value, setValue] = useState(initialValue); function changeValue() { setValue((v) => v + 100); } return [value, changeValue]; }
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Es solo una convención de nomenclatura.

Sin embargo, los documentos son un poco engañosos:

En otras palabras, es como una función normal.

Es como una función normal, pero con el equipaje adicional de que, a diferencia de una función normal, dentro de una función pensada como un enlace personalizado, puede llamar a otros enlaces dentro de ella, y si intenta llamarlo como una función simple fuera del contexto de React , y usa ganchos adentro, fallará.

La parte que citó muestra por qué la convención de nomenclatura es como es:

Su nombre siempre debe comenzar con uso para que pueda saber de un vistazo que se aplican las reglas de Hooks.

De esta manera, será mucho más obvio de un vistazo que es un componente que invoca ganchos que debe seguir las reglas, en lugar de uno que no invoca ganchos.

Imaginar

 const MyComponent = ({ checkThing }) => { if (checkThing) { verifyThing(); }

Lo anterior sería un código no válido si verificar la verifyThing fuera un enlace personalizado. Si se cambió el nombre para seguir las convenciones que recomiendan los documentos y el linter:

 const MyComponent = ({ checkThing }) => { if (checkThing) { useVerifyThing(); }

se vuelve obvio que hay un problema, sin siquiera tener que saber nada acerca de lo que significa o hace verificar la verifyThing / useVerifyMean Medio. Ese es el principal beneficio de prefijar ganchos personalizados con use : eso le dice a usted y a otros usuarios del gancho que siempre debe llamarse incondicionalmente en el cuerpo principal de un componente funcional, lo cual es más útil que estropearlo en algún lugar y accidentalmente llamarlo a otro lugar y tener que trabajar hacia atrás desde un error de tiempo de ejecución para solucionarlo.

about 4 years ago · Juan Pablo Isaza Relatório

0

Esta es solo una regla ESLint del complemento eslint-plugin-react-hooks .

La regla, como todas las reglas de linter (análisis estático), es una guía para ayudarlo a producir código fácil de mantener y comprensible. No se aplica en la compilación ni en el tiempo de ejecución.

Por ejemplo, si simplemente deshabilitara el linter, encontraría que su aplicación se ejecuta sin errores

 const [value, setValue] = useState(initialValue); // eslint-disable-line react-hooks/rules-of-hooks
about 4 years ago · Juan Pablo Isaza Relatório

0

esta es una regla como otros lenguajes, por ejemplo, en rust o c ++, tenemos que usar punto y coma al final del código, por lo que este es un gancho de reacción y cuando lo usamos debe comenzar con una letra mayúscula, pero la segunda es la función javascript y no tiene esa regla

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda